package mvc.handlers;

import session.ListaEsamiLocal;
import util.InterfaceUtente;

import mvc.framework.*;

import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * Handler per gestire l'azione di visualizzazione del profilo di un utente
 * 
 * @author Grillo
 */
public class ListaEsamiHandler extends AbsRequestHandler {

    //costanti di errore
    public final static int ERR_LOGIN = 1;
    public final static int ERR_MISSED_FIELD = 2;

    private final static String ACTION_NAME = "listaEsami";

    public ListaEsamiHandler(DialogHandler dHandler) {
        super(dHandler);

        errors.add("L'azione richiesta necessita di essere collegati");
        errors.add("Parametri mancanti nella richiesta");
    }

    public String getActionName() {
        return ACTION_NAME;
    }

    public void setNextPage() {
        nextPage = "/views/listaEsami.jsp";
    }
    
    public int validate() {
        return SUCCESS;
    }

    public int execute() {
        ListaEsamiLocal esamiBean = null;
        Integer matricola = dialogHandler.getParameter("matricola")!=null ? Integer.parseInt(dialogHandler.getParameter("matricola")) : 0;
        String user = dialogHandler.getParameter("user");

        //Bind agli EJB
        try {
            Context c = new InitialContext();
            esamiBean = (ListaEsamiLocal) c.lookup("java:comp/env/ListaEsamiBean");
        } catch (NamingException ne) {}

        if(matricola != 0 && user != null)
            SessionManager.setAttribute(dialogHandler.getSession(), "listaEsami", esamiBean.getListaEsamiByMatricola(matricola, user));
        else
            SessionManager.setAttribute(dialogHandler.getSession(), "listaEsami", esamiBean.getListaEsami());

        return SUCCESS;
    }

    @Override
    public IRequestHandler clone(DialogHandler dHandler) throws CloneNotSupportedException {
        return new ListaEsamiHandler(dHandler);
    }
}